package tech.waterism.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import tech.waterism.enums.RegularEnum;

import java.util.List;
import java.util.Map;

@Data
@ApiModel("调度优化算法参数")
public class AlgorithmDispatch {
    /**
     * algorithm name
     */
    @ApiModelProperty("算法名称")
    private String name;
    /**
     * 最大迭代次数
     */
    private Integer maxEvaluations;

    private List<String> message;
    /**
     * 默认参数比例
     */
    @ApiModelProperty("默认参数比例")
    private Double defaultPopulationProportion;
    /**
     * moea framework 参数
     */
    @ApiModelProperty("moea framework 参数")
    private Map<String, String> attributes;

    /**
     * poa算法参数
     */
    @ApiModelProperty("poa算法参数")
    private PoaParaDto poaParaDto;

    /**
     * 控制变量
     */
    @ApiModelProperty("控制变量")
    private List<DispatchVariable> variables;
    /**
     * 目标函数
     */
    @ApiModelProperty("目标函数")
    private List<DispatchObjective> objectives;

    /**
     * 追加目标函数 -- to remove?
     */
    @ApiModelProperty("追加目标函数")
    private List<DispatchObjective> newObjectives;
    /**
     * 约束条件
     */
    @ApiModelProperty("约束条件")
    private List<DispatchConstraint> constrains;
    /**
     * 调度规则
     */
    @ApiModelProperty(value = "调度规则")
    private RegularEnum regular;
}

